/**
 * 云函数调用封装
 */
const cloud = {
    // 调试模式标志
    isDebugMode: true, // 设置为true开启调试模式
    
    /**
     * 初始化云环境
     */
    init() {
        if (this.isDebugMode) {
            console.log('[CLOUD] 调试模式：云环境初始化已跳过');
            return;
        }
        
        if (!wx.cloud) {
            console.error('请使用 2.2.3 或以上的基础库以使用云能力');
            return;
        }
        
        wx.cloud.init({
            env: 'abitions-6gmak8fr92c59b33', // 环境ID
            traceUser: true, // 是否将用户访问记录到用户管理中，在控制台可见
        });
    },
    
    /**
     * 获取数据库实例
     */
    database() {
        if (this.isDebugMode) {
            console.log('[CLOUD] 调试模式：返回模拟数据库实例');
            // 返回一个模拟的数据库实例
            return {
                collection: () => ({
                    doc: () => ({
                        get: async () => ({ data: {} }),
                        set: async () => ({ _id: 'mock_id' }),
                        update: async () => ({ stats: { updated: 1 } }),
                        remove: async () => ({ stats: { removed: 1 } })
                    }),
                    where: () => ({
                        get: async () => ({ data: [] }),
                        count: async () => ({ total: 0 }),
                        update: async () => ({ stats: { updated: 1 } }),
                        remove: async () => ({ stats: { removed: 1 } })
                    }),
                    add: async () => ({ _id: 'mock_id' }),
                    get: async () => ({ data: [] }),
                    count: async () => ({ total: 0 }),
                    orderBy: () => ({ limit: () => ({ get: async () => ({ data: [] }) }) }),
                    limit: () => ({ get: async () => ({ data: [] }) })
                })
            };
        }
        return wx.cloud.database();
    },
    
    /**
     * 调用云函数
     * @param {String} name 云函数名称
     * @param {Object} data 传递参数
     */
    async callFunction(name, data = {}) {
        if (this.isDebugMode) {
            console.log(`[CLOUD] 调试模式：模拟调用云函数 ${name}，参数:`, data);
            
            // 返回模拟数据
            return {
                result: {
                    code: 0,
                    data: this._getMockData(name, data),
                    message: '调试模式：模拟云函数返回'
                }
            };
        }
        
        return await wx.cloud.callFunction({
            name,
            data
        });
    },
    
    /**
     * 根据云函数名称和参数生成模拟数据
     * @private
     */
    _getMockData(name, data = {}) {
        console.log(`[CLOUD] 生成 ${name} 的模拟数据`);
        
        // 根据不同的云函数名称返回不同的模拟数据
        switch (name) {
            case 'passport/my_detail':
                return {
                    USER_ID: 'debug_admin_id',
                    USER_NAME: '调试管理员',
                    USER_PIC: '',
                    USER_MOBILE: '13800138000',
                    USER_TYPE: 'admin',
                    USER_STATUS: 1,
                    USER_DEPT: '技术部',
                    USER_TITLE: '系统管理员',
                    USER_NO: 'DEBUG001',
                    USER_FORMS: []
                };
                
            case 'wecom/login':
                return {
                    token: {
                        id: 'debug_admin_id',
                        name: '调试管理员',
                        avatar: '',
                        phone: '13800138000',
                        role: 'admin',
                        status: 1,
                        permissions: ['admin', 'user'],
                        dept: '技术部',
                        title: '系统管理员',
                        no: 'DEBUG001',
                        type: 'debug',
                        time: Date.now()
                    }
                };
                
            // 可以根据需要添加更多的模拟数据
            default:
                return {
                    success: true,
                    message: '操作成功（调试模式）'
                };
        }
    }
};

module.exports = cloud; 